Scheduling memory access requests using predicted memory timing and state information

ABSTRACT

A data processing system employs an improved arbitration process in selecting pending memory access requests received from the one or more processor cores for servicing by the memory. The arbitration process uses memory timing and state information pertaining both to memory access requests already submitted to the memory for servicing and to the pending memory access requests which have not yet been selected for servicing by the memory. The memory timing and state information may be predicted memory timing and state information; that is, the component of the data processing system that implements the improved scheduling algorithm may not be able to determine the exact point in time at which a memory controller initiates a memory access for a corresponding memory access request and thus the component maintains information that estimates or otherwise predicts the particular state of the memory at any given time.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is related to co-pending U.S. patent applicationSer. No. 12/748,600 (Attorney Docket No. NM45808HH), entitled“ASYNCHRONOUSLY SCHEDULING MEMORY ACCESS REQUESTS” and filed on evendate herewith, the entirety of which is incorporated by referenceherein.

FIELD OF THE DISCLOSURE

The present disclosure relates generally to data processing systems, andmore particularly to scheduling memory access requests in dataprocessing systems.

BACKGROUND

The operating performance of a data processing system can depend on therate at which information can be stored and retrieved at a memorydevice. Many types of memory, such as double data rate (DDR) dynamicrandom access memory (DRAM), operate at higher levels of accessefficiency when memory accesses are scheduled, or reordered, so that thesame local region of a memory is consecutively accessed. Whilesingle-core processors or single-thread applications frequently canexhibit this locality, the implementation of multiple processor cores ormulti-threaded applications typically results in an interleaving ofmemory access requests to disparate locations in the memory. As aresult, multi-core processors and multi-threaded applications can renderconventional memory access scheduling techniques ineffective.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure may be better understood, and its numerousfeatures and advantages made apparent to those skilled in the art byreferencing the accompanying drawings.

FIG. 1 is a block diagram illustrating a data processing system inaccordance with a specific embodiment of the present disclosure.

FIG. 2 is a flow diagram illustrating a method for asynchronouslyscheduling memory access requests in the data processing system of FIG.1 in accordance with a specific embodiment of the present disclosure.

FIG. 3 is a block diagram illustrating an example implementation of ascheduler of the data processing system of FIG. 1 in accordance with aspecific embodiment of the present disclosure.

FIG. 4 is a block diagram illustrating an example implementation of anaccumulating row open table of the scheduler of FIG. 3 in accordancewith a specific embodiment of the present disclosure.

FIG. 5 is a block diagram illustrating an example implementation of therequest queue of the scheduler of FIG. 3 in accordance with a specificembodiment of the present disclosure.

FIG. 6 is a flow diagram illustrating an example selection criteriahierarchy for scheduling memory access requests using memory timing andstate information in accordance with a specific embodiment of thepresent disclosure.

DETAILED DESCRIPTION

FIGS. 1-6 illustrate example techniques for scheduling memory accessrequests in a data processing system. In accordance with one aspect, adata processing system employs an improved arbitration process inselecting pending memory access requests received from the one or moreprocessor cores for servicing by the memory. This arbitration processuses memory timing and state information pertaining both to memoryaccess requests already submitted to the memory for servicing and to thepending memory access requests which have not yet been selected forservicing by the memory. The memory timing and state information caninclude: information identifying the currently open row for each bank ofthe memory; information identifying the time remaining before the nextactivate command can be initiated for a each bank of the memory;information identifying the time remaining before a precharge operationcan be initiated for each bank of the memory; information identifyingthe time remaining before an initiated precharge operation for a bankhas been completed; information identifying which pending memory accessrequests addressed to the same pages of memory; and combinationsthereof. In one embodiment, the memory timing and state information maybe predicted memory timing and state information; that is, the componentof the data processing system that implements the improved schedulingalgorithm may not be able to determine the exact point in time at whicha memory controller initiates a memory access for a corresponding memoryaccess request and thus the component maintains information thatestimates or otherwise predicts the particular state of the memory atany given time.

Other criteria, such as starvation-prevention mechanisms, also can beconsidered by the scheduling algorithm in selecting the next pendingmemory access request to be submitted for servicing by the memory. Byconsidering the memory timing and state information pertaining to bothpending memory access requests not yet selected for servicing and tomemory access requests already selected for servicing, the improvedarbitration process can select the next memory access request to beserviced by the memory in a manner that adapts to the particular stateof the memory so as to achieve a greater throughput and reduced latencyof memory accesses.

In accordance with another aspect of the present disclosure, memoryaccess requests are asynchronously scheduled with respect to theclocking of the memory. To this end, the circuitry implementing thescheduler is operated using a clock signal with a frequency differentfrom the frequency of the clock signal used to operate the circuitrythat implements each memory access. In one embodiment, the clock signalused to clock the scheduler has a lower frequency than the clock used bya memory access controller. As a result, the scheduler is able toconsider a greater number of pending memory access requests whenselecting the next pending memory access request to be submitted to thememory for servicing compared to conventional schedulers that operate inthe same clock domain as the memory access controller. Because a greaternumber of pending memory access requests can be considered in thescheduling process, the resulting sequence of selected memory accessrequests is more likely to be optimized for memory access throughput.This asynchronous memory scheduling technique can employ the improvedarbitration process described herein. However, the asynchronous memoryinstead can use one or more conventional memory access schedulingalgorithms, or a combination of one or more conventional memory accessscheduling algorithms and the improved arbitration process describedherein.

FIG. 1 is a block diagram illustrating an example data processing system100 implementing memory access scheduling in accordance with at leastone embodiment of the present disclosure. The data processing system 100includes a processor 10 and a memory 16. The memory 16 can include anyof a variety of memory types, including dynamic random access memory(DRAM), static random access memory (SRAM), and the like. In aparticular embodiment, the memory 16 includes a dual data rate (DDR)SRAM or DDR DRAM memory, and the techniques of the present disclosureare described in this context for ease of illustration. However, thesetechniques are not limited to DDR memory architectures. The processor 10includes one or more processor cores, including processor cores 11, 12,and 13. The processor 10 further includes a scheduler 14, a memorycontroller 15, and a frequency translation module 17. For clarity, FIG.1 omits other components of the data processing system 100 whoseoperation is well known to those of ordinary skill in the art, such ascache memory devices, external interfaces, and the like.

Each processor core includes circuitry configured to execute softwareand perform related operations. The operation of a processor core oftenrequires frequent access to the memory 16, such as when performing readaccesses to obtain stored data from the memory 16 or when performingwrite accesses to store data to the memory 16. A memory access isinitiated by a processor core as a memory access request, which isscheduled for servicing by the memory 16 via the scheduler 14. Thescheduler 14 receives memory access requests generated processor cores11-13 via a node labeled REQUEST. Received memory access requests arebuffered as pending memory access requests at a request queue of thescheduler 14 (not shown at FIG. 1). The scheduler 14 implements anarbitration process that evaluates at least a subset of the pendingmemory access requests so as to select the next pending memory accessrequest that is to be issued to the memory controller 15 for servicingby the memory 16, whereby the selected pending memory access request issubmitted to the memory controller 15 via node ARB_WON (arbitrationwon). The particular order in which the pending memory access requestsare selected for servicing specifies a memory access sequence in whichthe memory controller 15 conducts memory accesses corresponding to thepending requests. The operation of the scheduler 14 is described belowwith reference to FIGS. 3-6.

The memory controller 15 operates to conduct signaling with the memory16, via node PHY, so as to perform memory accesses in an order specifiedby the sequence in which corresponding memory access requests areselected by the scheduler 14. Accordingly, the memory controller 15performs each memory access by providing the memory 16 with suitablesequences of commands in conjunction with address information and, forwrite accesses, data information on signal lines (not shown). In oneembodiment, the memory 16 is a DDR DRAM or DDR SRAM, whereby “DDR” isnomenclature that refers to a family of memory standards (collectivelyreferred to herein as the singular “DDR standard”), including DDR, DDR2,and DDR3, and subsequent generations within the DDR family, such as theDDR4 standards currently under development. Pursuant to the DDRstandard, a DDR memory is logically/physically divided into a pluralityof banks, each bank comprising a plurality of rows. A location to beaccessed in a DDR memory is specified by an address that can bepartitioned into a plurality of fields, including a chip select fieldthat selects a particular chip of the memory, a bank select field thatselects a particular bank of the selected chip, a row address field thatselects a particular row within the selected bank, and a column addressfield that selects a particular subset of columns of the selected row.Consistent with conventional DDR nomenclature, a particular row at aparticular bank is referred to herein as a “page.”

Memory accesses to a DDR memory are subject to various timingconstraints due to the circuit architecture of a DDR memory and due totiming parameters specified in the DDR standard defined by the JointElectron Devices Engineering Council (JEDEC) standards organization.When accessing a particular row of a bank that is different than thelast row accessed at the same bank, the memory controller 15 must issuean ACTIVATE command (also known as a BANK ACTIVE command) to access thenew row so as to initialize the input/output (I/O) circuitry of thememory 16 in preparation for accessing the specified row. Further,before activating a new row at the bank, the previously accessed row ofthe bank must be deactivated by issuing a PRECHARGE command. A DDRmemory typically requires a minimum delay between the initiation of aprecharge operation (via issuance of a PRECHARGE command) to a bank andthe initiation of an activate operation (via issuance of an ACTIVATEcommand) for opening another row of the same bank for access. This delaytypically is referred to as the “row precharge time” and is representedby the parameter “tRP.” While various examples of the techniques of thepresent application are described in the context of DDR memory, thesetechniques can be implemented in other memory architectures withoutdeparting from the scope of the present disclosure.

A DDR memory also typically requires a minimum delay between theinitiation of an activation operation (via issuance of an ACTIVATEcommand) for a bank and the subsequent initiation of a prechargeoperation (via issuance of a PRECHARGE command) to the same bank. Thisdelay typically is referred to as the “row active time” and isrepresented by the parameter “tRAS.” That is, the row active time tRASis the time needed by the memory to internally refresh the correspondingrow. Parameters tRP and tRAS are typically expressed in the form of aspecified number of clock cycles of the clock signal used to clock theDDR memory. For example, a DDR memory specification may specify tRP as adelay substantially equal to seven cycles and specify tRAS as a delaysubstantially equal to fifteen cycles, the particular number of clockcycles based on the operating frequency of the DDR memory.

The precharge and activate operations add additional delay (latency)before a memory access can be performed. Consecutive memory accessessharing the same page address (and thus only varying with respect tocolumn address) do not incur additional delay necessary to perform theprecharge/activate operations between each memory access, and thusmemory access throughput is increased. In at least one embodiment, thescheduler 14 employs an improved arbitration process to schedule pendingmemory accesses so as to reduce or minimize the impact of the memorytiming requirements associated with the precharge and activateoperations used to conduct memory accesses. The improved arbitrationprocess utilizes memory timing and state information pertaining to boththose memory access requests that have already been selected andsubmitted to the memory controller 15 for servicing, as well as thosepending memory access requests that have yet to be selected forservicing. The criteria by which scheduler 14 reorders, or schedules,memory access requests can include an evaluation of presently open rows,a prediction of memory timing information associated with closed rows,access latency requirements, and bank and row information associatedwith pending access requests. This improved arbitration process isdescribed in greater detail below with reference to FIGS. 3-6.

In another embodiment, improved memory access throughput is achieved byoperating the scheduler 14 asynchronously relative to the clocking ofthe memory controller 15 and the memory 16. To illustrate, FIG. 1depicts an example implementation whereby the circuitry of the memorycontroller 15 is clocked by a memory clock signal (hereinafter,“MEMCLK”), whereas at least a portion of the circuitry of the scheduler14 is clocked by a system or platform clock signal (hereinafter,“SYSCLK”), one or more of bus interfaces (not shown), and the like. Inthis example, the scheduler 14 is identified as operating in a SYSCLKdomain 20 and the memory controller 15 is identified as operating in aMEMCLK domain 21. In one embodiment, the clock SYSCLK has a lowerfrequency than the clock MEMCLK. By operating the scheduler 14 in theslower SYSCLK domain 20, the scheduler 14 can consider a greater numberof buffered pending memory access requests in selecting a pending memoryaccess request for servicing compared to a conventional approach whereinthe scheduling circuitry is operated by the same clock as used to clockthe memory. Because a larger number of buffered pending memory accessrequests can be considered, the scheduler 14 is more likely to select amore optimal sequence of memory access requests that achieves a greatermemory access throughput than in instances whereby a smaller number ofpending memory access requests is considered. Operating the scheduler 14at a slower frequency than the memory access controller 15 allows thescheduler 14 to employ a greater number of logic levels (logic gatesincluded between clocked logic elements) to perform the arbitrationprocess. Traditional pipelining techniques may not be suitable forimplementing arbitration and reordering functions. In one embodiment,the asynchronous scheduling by the scheduler 14 includes the use ofimproved arbitration process described herein. Alternatively, thisasynchronous scheduling can employ a conventional scheduling algorithm,or a combination of one or more conventional scheduling algorithms andthe improved arbitration process described herein.

The memory timing parameters tRP and tRAS typically are represented ascorresponding numbers of clock cycles of the memory clock MEMCLK. Asdescribed in greater detail herein, the scheduler 14 predicts thecurrent state of corresponding banks of the memory 16 using, in part,timing values initially set to representations of the memory timingparameters tRP and tRAS. However, when the scheduler 14 isasynchronously clocked relative to the memory 16, the scheduler 14 canemploy the frequency translation module 17 to identify a ratio of thefrequency of the clock signal MEMCLK to the frequency of the clocksignal SYSCLK or some other identifier of the relationship between thesetwo clock signals. To illustrate, the frequency translation module 17can count the number of cycles of clock signal MEMCLK that occur duringan interval corresponding to a specified number of cycles of clocksignal SYSCLK (e.g., the number of MEMCLK cycles that occur during tenSYSCLK cycles). The scheduler 14 then can use the resulting frequencyrelationship to translate the memory timing parameters tRAS and tRP fromthe MEMCLK clock domain 21 to the SYSCLK clock domain 20. For example,assuming the parameter tRAS is specified as nine (9) MEMCLK cycles, theparameter tRP is specified as three (3) MEMCLK cycles, and the frequencytranslation module 17 determines a frequency ratio of 1:3(SYSCLK:MEMCLK), the scheduler 14 can translate the parameter tRAS tothree (3) SYSCLK cycles (9×1/3) and translate the parameter tRP to one(1) SYSCLK cycle (3×1/3). Because clocks signals SYSCLK and MEMCLKtypically are asynchronous, the translation provided by frequencytranslation module 17 may not be precise and an adjustment, such as byadding one cycle to each parameter, may be made to adjust for thisimprecision without substantially affecting system performance.

FIG. 2 is a flow diagram illustrating an example method 200 forasynchronously scheduling memory access requests in the data processingsystem 100 of FIG. 1 in accordance with at least one embodiment of thepresent disclosure. At block 201, the scheduler 14 receives memoryaccess requests from one or more of the plurality of processor cores.Each memory access request is buffered at a request queue of thescheduler 14 until the memory access request is selected for servicing.In parallel with iterations of the process of block 201, the scheduler14 selects, at block 202, a pending memory access request presentlybuffered at the request queue, forwards the selected memory accessrequest to the memory controller 15, and removes the memory accessrequest from the request queue. In one embodiment, the scheduler 14selects a memory access request from the pending requests using anarbitration process described below. In another embodiment, thescheduler 14 can employ a conventional scheduling technique. In parallelwith iterations of the processes of blocks 201 and 202, at block 203 thememory controller 15 services the memory access request by performingthe corresponding memory access with the memory 16 subject to thecurrent state of the memory 16 and the memory timing requirements of thememory 16.

Although FIG. 2 depicts the processes of blocks 201, 202, and 203 as asequential flow for ease of illustration, it will be understood thatiterations of these processes are performed independently and inparallel. Additional memory access requests can continue to be receivedand buffered at the request queue at substantially the same time thatpending requests are sequentially removed from the request queue forservicing. However, the request queue has a finite number of entries,which can correspond to the maximum number of memory access requeststhat can be outstanding at one moment in time. In the event that therequest queue is filled to capacity, scheduler 14 is unable to buffer afurther request at block 201 until a pending request is selected forservicing at blocks 202 and 203 and thereby removed from the requestqueue.

In the illustrated example, the circuitry of the processor 10 thatperforms the processes of buffering and scheduling pending memory accessrequests, as represented by blocks 201 and 202, operates in the SYSCLKdomain 20 (i.e., the circuitry is clocked by the clock signal SYSCLK).In contrast, the circuitry of the memory controller 15 that performs theprocess of servicing a selected memory access request, as represented byblock 203, operates in the MEMCLK clock domain 21 (i.e., the circuitryis clocked by the clock signal MEMCLK). As noted above, thisasynchronicity between the scheduling of pending memory access requestsand the servicing of selected memory access requests can permit agreater number of pending memory access requests to be considered in theselection process, thereby resulting in a more optimal sequence ofselected memory access requests that provides an improved overall memoryaccess throughput.

FIGS. 3-6 illustrate in greater detail the improved arbitration processthat can be employed by the scheduler 14 in scheduling pending memoryaccess requests for servicing by the memory 16. FIG. 3 is a blockdiagram illustrating an example implementation of the scheduler 14 inaccordance with at least one embodiment of the present disclosure. Inthe depicted example, the scheduler 14 includes a request queue 300, anarbiter 301, a bank decoder 302, an accumulate row-open table (AROT)303, and a timing module 304.

The request queue 300 is configured to buffer pending memory accessrequests in the order that they are received. For example, an arrivingmemory access request is stored at the bottom of request queue 300 and,consequently, a memory access request at the top of the request queue300 would be the oldest pending request stored at the request queue 300.The arbiter 301 operates to select the next pending memory accessrequest that is to be serviced (as represented by the nomenclature“ARB_WON” in FIG. 3). In selecting the next pending memory accessrequest, the arbiter 301 considers information pertaining to the pendingmemory access requests that are stored in the request queue 300 as wellas information stored in the AROT 303 and pertaining to the currentstate and timings of the memory 16 due to memory access requests thatwere recently selected for servicing by the memory 16. The selectedmemory access request is removed from request queue 300, and theremaining pending memory access requests in entries below the entry ofthe selected memory access request are shifted towards the top entry ofthe request queue 300 to eliminate an empty entry corresponding to theserviced request, if any. The sequential arbitration and selectionprocess continues as long as any pending request remains in the requestqueue 300.

In one embodiment, the AROT 303 includes a plurality of entries, eachentry associated with a corresponding one of the banks of the memory 16.For example, the AROT 303 would have thirty-two entries when the memory16 has thirty-two banks. Each entry stores information representing thepredicted current state of the corresponding bank in view ofrecently-selected memory access requests addressed to the correspondingbank. Each time a pending memory access request is selected forservicing, the bank decoder 302 decodes the bank select portion of theaddress associated with the selected memory access request, and the bankselect portion is used to identify an entry of the AROT 303 thatcorresponds to the bank of the memory 16 that is addressed by theselected memory access request. The state and timing information of theidentified entry is updated to reflect the changes in predicted state ofthe memory 16 resulting from the selection and servicing of the memoryaccess request. The state and timing information stored at each entrycan include, for example, information identifying the row of thecorresponding bank that is predicted to be currently OPEN or CLOSED,information identifying the remaining time before an ACTIVATE commandcan be issued to the corresponding bank, information identifying theremaining time before a PRECHARGE command can be issued to thecorresponding bank, and information identifying the remaining timebefore an already-initiated precharge operation completes.

In one embodiment, the state and timing information of a correspondingentry of the AROT 303 reflects the state and timing of the correspondingbank relative to activation and precharge operations, initiated via theissuance of ACTIVATE and PRECHARGE commands, respectively. Each entry ofthe AROT 303 therefore can include representations of the current timeremaining before a PRECHARGE command can be submitted to thecorresponding bank, which is based on the parameter tRAS, and thecurrent time remaining before an ACTIVATE command can be submitted tothe corresponding bank, which is based on the parameter tRP. In certainimplementations, the scheduler 14 may not be able to identify the exactpoint in time in which the memory controller 15 signals an ACTIVATEcommand or a PRECHARGE commands. To illustrate, when the scheduler 14operates asynchronously with respect to the clock domain of the memory16, it may take a number of clock cycles to translate current memorytiming information received from the memory 16 from values relative tothe memory clock domain to values relative to the system clock domain.Thus, the information stored in the AROT 303 can comprise a predictionof the current states of the corresponding banks of the memory 15 withregard to timings of ACTIVATE and PRECHARGE operations. To this end, thetiming module 304 employs a plurality of counters to maintain thepredicted timing information for the AROT 303. In particular, the timingmodule 304 includes counters to maintain a representation of theparameters tRP and tRAS with respect to each bank of memory 16. Theoperation of the AROT 303, the request queue 300, and the arbiter 301can be better understood with reference to FIGS. 4-6.

FIG. 4 is a block diagram illustrating an implementation of the AROT 303of FIG. 3 in accordance with a specific embodiment of the presentdisclosure. In the depicted example, the AROT 303 includes thirty-twoentries, including illustrated entries 401, 402, and 403, whereby eachentry is associated with a corresponding one of thirty-two banks ofmemory 16. Each entry has a plurality of fields to store predictedtiming and state information for the corresponding bank, including avalid field 410, a tRAS timing field 411, a tRP timing field 412, and arow address field 413. As noted above, the information in the AROT 303reflects the predicted states of the banks of the memory 16 based onmemory access requests that have already been selected for servicing bythe memory 16.

The row address field 413 stores the row address of the memory accessrequest most recently selected for the corresponding bank and thusidentifies the most-recently accessed row of the corresponding bank. Thevalid field 410 stores a value that is used to identify whether theidentified row is open or closed. The tRAS field 411 stores a value,identified herein as the value “PtRAS,” that represents the predictedcurrent time remaining before an ACTIVATE command can be issued to thecorresponding bank, and the tRP field 412 stores a value, identifiedherein as the value “PtRP,” that represents the predicted current timeremaining before a PRECHARGE command can be issued to the correspondingbank.

In one embodiment, the memory controller 15 can be configured to serviceeach memory access request in one of two modes: auto-precharge enabled;or auto-precharge disabled. Auto-precharge disabled mode can also bereferred to as page mode. If auto-precharge is enabled for a memoryaccess request represented in an entry of the AROT 303, the bit storedat the valid field 410 of the entry is cleared (set to a logic lowvalue) to indicate that the row being accessed will be CLOSED followingthe present transaction. If auto-precharge is disabled, the bit storedat the valid field 410 is set to a logic high value to indicate that therow being accessed will remain OPEN following the corresponding memoryaccess.

The AROT 303 is updated in response to at least two types of events:selection of a pending memory access request; and a new clock cycle ofthe clock signal used to clock the circuitry of the scheduler 14 (e.g.,the clock signal SYSCLK of FIG. 1). When a pending memory access requestis selected by the arbiter 301 for servicing, the entry of the AROT 303corresponding to the bank addressed by the selected memory accessrequest is updated to reflect the changes in the state of thecorresponding bank due to the performance of the corresponding memoryaccess operation. In the event that the row address of the selectedpending memory access is different from the previous row addressassociated with this bank, the row address of the selected memory accessrequest is stored to the row address field 413. Further, the tRAS field411 is reset to a predetermined value PtRAS_max, which represents theminimum row-active delay (tRAS) associated with memory 16 in terms ofclock cycles of the clock signal used to clock the scheduler 14. Forexample, if the minimum tRAS delay permitted by memory 16 is theequivalent of seven cycles of the clock SYSCLK, the value PtRAS in thetRAS field 411 is set to an initial value of seven. Similarly, when theselected memory access request is configured to be serviced withauto-precharge enabled, the tRP field 412 is reset to a predeterminedvalue PtRP_max, which represents the sum of the minimum row-prechargedelay (tRP) associated with memory 16 and an estimate of when theprecharge operation will commence following the associated access interms of clock cycles of the clock signal used to clock the scheduler14. Otherwise, if auto-precharge is disabled for the selected memoryaccess request, the tRP field 12 is set to zero (that is, PtRP is set to0). At each new clock cycle, the timing module 304 accesses each entryof the AROT 303 and decrements the values PtRAS and PtRP therein by one(unless a value is already at zero) so as to reflect the passing oftime.

The arbiter 301 uses the PtRAS values to predict whether the tRAS delayhas expired for a corresponding bank and uses this information inselecting the next pending memory access request for servicing. Toillustrate, if a pending memory access request specifies a row addressthat will result in a page miss, but the corresponding PtRAS value iszero and thus indicating that the tRAS delay for the bank has alreadyexpired, a PRECHARGE command can be immediately issued to the bank. Incontrast, selection of a pending memory access request that will be apage miss and which is to a bank for which the corresponding PtRAS valueis non-zero will incur a delay penalty while waiting for the tRAS delayto expire. Thus, the arbiter 301 can preferentially select pendingmemory access requests associated with expired tRP delays over pendingmemory access requests where the associated tRP delay has not expired.

The arbiter 301 uses the PtRP values to predict whether the tRP delayhas expired for a corresponding bank and uses this information inselecting the next pending memory access request for servicing. Toillustrate, if a pending memory access request specifies a row addresscorresponding to a closed row, but the corresponding PtRP value is zero,thereby indicating the tRP delay has already expired, the memorycontroller 15 can immediately issue an ACTIVATE command. In contrast, apending memory access request that specifies a row address correspondingto a closed row, but the corresponding PtRP value is non-zero indicatesthat the tRP delay has not yet expired, and thus selection of thispending memory access will incur a delay penalty while waiting for thetRP delay to expire. Thus, the arbiter 301 can preferentially selectpending memory access requests associated with expired tRAS delays overpending memory access requests where the associated tRAS delay has notyet expired.

FIG. 5 is a block diagram illustrating an implementation of the requestqueue 300 in accordance with a specific embodiment of the presentdisclosure. Request queue 300 includes a plurality of entries, such astwelve entries represented by the illustrated entries 501, 502, and 503.A greater or a fewer number of entries can be included at request queue300. Each entry serves to buffer a corresponding pending memory accessrequest. Each entry has a plurality of fields related to thecorresponding pending memory access request, including a read/write(R/W) field 510, an address field 511, a timeout field 512, apage_compare_hit field 513, a page_compare_miss field 514, an open field515, a closed field 516, a tRAS field 517, and a tRP field 518. The R/Wfield 510 stores a value indicating whether the corresponding pendingmemory access request is a read access or a write access. The addressfield 511 stores at least a portion of the address associated with thepending memory access request. The timeout field 512 stores a valuerepresenting the number of times that the pending memory access requesthas been passed over for selection.

The open field 515 stores a bit that is set to a logic high value whenthe row associated with the corresponding memory access request iscurrently open, based on the assertion of the bit in the valid field 410of the corresponding entry of the AROT 303. The closed field 516 storesa bit that is set to a logic high value when the row associated with thecorresponding memory access request is currently CLOSED (the row ispresently being precharged), based on the negation of the bit in thevalid field 410 at AROT 303. Accordingly, if both the open field 515 andthe closed field 516 of an entry contain a logic low value, thecorresponding memory access request would result in a page miss if thearbiter 301 selected the memory access request for servicing at thepresent time.

The page_compare_hit field 513 of a particular entry stores informationidentifying other entries of request queue 300 that store pending memoryaccess requests that are addressed to the same page as the pendingmemory request stored in the particular entry. That is, thepage_compare_hit field 513 stores information that would identify othermemory access requests that would result in a page hit if servicedimmediately following the servicing of the pending memory request storedin the particular entry. To illustrate, the page_compare_hit field 513can store a bit vector, whereby each bit position of the bit vector isassociated with a corresponding entry of the request queue 300. Forexample, a first bit of page_compare_hit field 513 is associated withentry 501, the second bit is associated with entry 502, and so on. A bitposition of the bit vector is set to a logic high value if the entryassociated with the bit position stores a pending memory request that isaddressed to the same page. Conversely, the bit position of the bitvector is set to a logic low value if the entry associated with the bitposition stores a pending memory request that is addressed to adifferent page. For example, the second bit of the page_compare_hitfield 513 of entry 501 is set to a logic high value when the addressassociated with the memory access request stored at entry 502 includesthe same bank and row address as the memory access request stored atentry 501. The arbiter 301 thus can use the bit vectors stored in thepage_compare_hit fields 513 of the entries of the request buffer 300 toidentify those pending memory access requests that are addressed to thesame page. As described below, this information can be used by thearbiter 301 to preferentially select memory access requests so thatmemory access requests addressed to the same page are consecutivelyselected for servicing, and thus generating a consecutive series of pagehits, so as to maximize memory access throughput. In the absence of apending transaction that would hit on an open page, the scheduler 14selects a pending transaction that will begin a series of subsequentpage hits.

The page_compare_miss field 514 of a particular entry stores informationidentifying other entries of request queue 300 that store pending memoryaccess requests that are addressed to a different pages than the pendingmemory request stored in the particular entry. That is, thepage_compare_miss field 514 stores information that would identify othermemory access requests that would result in a page miss if servicedimmediately following the servicing of the pending memory request storedin the particular entry. As with the page_compare_hit field 513, thepage_compare_miss field 514 can store a bit vector whereby each bitposition is associated with a different entry of the request queue 300.For example, page_compare_miss field 514 can be used to prematurelyinterrupt an intended sequence of accesses.

Timeout field 512 is initialized to a specified value corresponding to amaximum latency acceptable for the corresponding memory access request.Each time the corresponding memory access request is bypassed by thearbiter 301 in favor of another pending memory access request, the valuein the timeout 512 of the bypassed pending memory access request isdecremented. The value in the timeout field 512 being decremented tozero signals to the arbiter 301 that the corresponding memory accessrequest has reached the maximum acceptable latency for the memory accessrequest and thus the arbiter 301 may preferentially select the memoryaccess request for servicing. In one embodiment, the timeout fields 512of different memory access requests may be initialized to differentvalues based on the different priorities of the corresponding memoryaccess requests. To illustrate, the timeout field 512 of an entryassociated with a high-priority (low maximum latency) memory accessrequest can be initialized to, for example, a value of two so as tospecify that the corresponding memory access request can only fail towin arbitration, and thus be bypassed for servicing, a maximum of twotimes. In contrast, a low-priority (high maximum latency) memory accessrequest can be initialized to, for example, a value of six so as tospecify that the corresponding memory access request can fail to winarbitration up to six times before mandating selection of the memoryaccess request. In certain implementations write accesses are treated asvery low priority such that the timeout field 512 for a write access isset to a very high value or otherwise is not considered during thearbitration process.

In one embodiment, the tRAS field 517 and the tRP field 518 of aparticular entry of request queue 300 is a copy of, or a pointer orother link to, the tRAS field 411 and the tRP field 412, respectively,of the entry of the AROT 303 that is addressed to the same bank as thememory access request in the particular entry of the request queue 300.Because multiple pending memory access requests represented in therequest queue 300 may be addressed to the same bank, the request queue300 may have multiple entries mapped to, or linked to, the tRAS field411 and the tRP field 412 of the same entry of the AROT 303.

The information stored in the request queue 300 is updated both inresponse to receiving a pending memory access request from a processorcore and in response to selection of a buffered pending memory accessrequest for servicing by the memory 16. When a pending memory accessrequest is received at the request queue 300, the arbiter 301 allocatesan entry of the request queue 300 to the received memory access requestand populates the corresponding fields of the allocated entry with therelevant information. The arbiter 301 also updates the other entriesresponsive to the particular characteristics of the received memoryaccess request. This update process includes: storing the addressinformation of the memory access request at the address field 511;initializing the timeout field 512 to an initial value associated withthe priority of the received memory access request; accessing the AROT303 to determine whether the row addressed by the received memory accessrequest is currently open or closed in the corresponding bank andsetting the open field 515 and the closed field 516 accordingly;analyzing the pages addressed by the other pending memory accessrequests in the request queue 300 and setting the page_compare_hit field513 and the page_compare_miss field 514 accordingly. Further, thepage_compare_hit fields 513 and the page_compare_miss fields 514 of theother entries of request queue 300 are updated based on the receivedmemory access request. When a pending memory access request is selectedfor servicing, the arbiter 301 deallocates the corresponding entry ofthe request queue 300 and updates the other entries of the request queue300 to reflect the selection of the memory access request. This updateprocess includes: decrementing the values stored in the timeout fields512 of the other entries; and updating the page_compare_hit fields 513and the page_compare_miss fields 514 of the other entries of the requestqueue 300 to reflect that the entry of the selected memory accessrequest is empty.

FIG. 6 is a flow diagram illustrating an example implementation of thearbitration process employed by the arbiter 301 in selecting a memoryaccess request for servicing by the memory 16 in accordance with aspecific embodiment of the present disclosure. In particular, FIG. 6illustrates an example hierarchy 600 of selection priorities in whichthe arbiter 301 selects pending memory access requests for servicing.While FIG. 6 illustrates one particular hierarchy of selectionpriorities, other hierarchies of selection priorities may be implementedwithout departing from the scope of the present disclosure. Further,although FIG. 6 illustrates a particular combination of selectionpriorities, other combinations of selection priorities may beimplemented and the arbitration process is not limited to only theselection priorities described herein.

The arbitration process represented by hierarchy 600 initiates oncethere is at least one pending memory access request represented in therequest queue 300. As represented by block 601, under the hierarchy 600the arbiter 301 preferentially selects from the request queue 300 apending memory access request for which the maximum latency delay hasexpired. As discussed above, the maximum latency delay for a pendingmemory request represents the maximum number of times that a pendingmemory access request is permitted to be bypassed for selection in favorof another pending memory access request. Accordingly, the arbiter 301accesses the timeout fields 512 of the request queue 300 to determinewhether any timeout field 512 is currently at zero, and thus identifyingthe pending memory access request in the corresponding queue as havingreached the maximum latency delay. In the event that there are multipleentries with a timeout field 512 having a value of zero, the arbiter 301can preferentially select the oldest of the corresponding memory accessrequests or, alternatively, the memory access request with the highestpriority.

In the event that no memory access requests with an expired maximumdelay latency are identified, at block 602 the arbiter 301preferentially selects from the request queue 300 a pending memoryaccess request that is addressed to a currently open page and thusavoiding delay that would otherwise be required to perform an activateoperation. As noted above, an asserted bit in the open field 515 of anentry of the request queue 300 identifies the corresponding pendingmemory access request as being addressed to an open page. Thus, thearbiter 301 can access the open field 515 of each entry of the requestqueue 300 identify any pending memory access requests meeting thecriteria of being addressed to a currently open page. In the event thatmultiple memory access requests meeting this criterion are identified,the arbiter 301 can select the oldest pending memory access request or,alternatively, the highest-priority pending memory access request.

In the event that no memory access requests addressed to an open pageare identified, at block 603 the arbiter 301 preferentially selects fromthe request queue 300 a pending memory access request that is addressedto a bank of the memory 16 for which a precharge operation hascompleted. In this instance, the bank would be ready for initiation ofan activate operation without further delay. As noted above, an assertedbit in the closed field 516 of an entry of the request queue 300identifies the corresponding pending memory access request as beingaddressed to a closed page. As also noted above, a value of zero for thePtRP value in the tRP field 518 of an entry of the request queue 300identifies the corresponding memory access request as being addressed toa bank for which either no precharge operation is pending or for which aprecharge operation has been completed. Thus, the arbiter 301 can accessthe closed field 516 and the tRP field 518 of each entry of the requestqueue 300 to identify any entries that have both an asserted bit in theclosed field 516 and a value of zero in the tRP field 518, therebyindicating that the corresponding memory access request meets thecriteria of being addressed to a bank of the memory 16 for which aprecharge operation has completed. In the event that multiple memoryaccess requests meeting this criterion are identified, the arbiter 301can select the oldest pending memory access request or, alternatively,the highest-priority pending memory access request.

In the event that no memory access requests addressed to a bank ofmemory 16 for which a precharge operation has completed are identified,at block 604 the arbiter 301 preferentially selects from the requestqueue 300 a pending memory access request that is addressed to a bank ofmemory 16 for which a precharge operation has been initiated. In thisinstance, only a relatively small delay would be needed before anactivate command could be issued to the bank. In one embodiment, thearbiter 301 can access the closed field 516 and the tRP field 518 ofeach entry of the request queue 300 to identify any entries that haveboth an asserted bit in the closed field 516 and non-zero value in thetRP field 518, thereby indicating that the corresponding memory accessrequest meets the criterion of being addressed to a bank of memory 16for which a precharge operation has been initiated. In the event thatmultiple memory access requests meeting this criterion are identified,the arbiter 301 can select the oldest pending memory access request or,alternatively, the highest-priority pending memory access request.

In the event that no memory access requests addressed to a bank of thememory 16 for which a precharge operation has been initiated, at block605 the arbiter 301 preferentially selects from the request queue 300 apending memory access request that is addressed to a page that is alsoaddressed by one or more other pending memory access requests present inthe request queue 300. In this instance, each of the two or more pendingmemory access requests could then be selected in sequence such that eachsuccessive pending memory request in the sequence following the firstwould result in a page hit and thus incur no additional delay thatotherwise would be required to conduct an activate operation or aprecharge operation. As described above, the page_compare_hit field 513of a particular entry of the request queue 300 identifies any otherentries of the request queue 300 that are associated with memory accessrequests that are addressed to the same page. The arbiter 301 thereforemay access the page_compare_hit field 513 of each entry to identifymemory access requests that meet this criterion. In the event thatmultiple memory access requests meet this criterion, the arbiter 301 canselect the oldest pending memory access request or the highest-prioritypending memory access request. Alternatively, the arbiter 301 can selectthe memory access request having the greatest number of pending memoryaccess requests addressed to the same page, as indicated by, forexample, the number of asserted bits in the bit vector stored in thepage_compare_hit field 513.

In the event that the request queue 300 is not identified as havingmultiple pending memory access requests addressed to the same page, atblock 606 the arbiter 301 preferentially selects from the request queue300 a pending memory access request that is addressed to a bank of thememory 16 for which a precharge operation can be initiated withoutfurther delay. As noted above, the PtRAS value stored in the tRAS field517 represents the current time remaining before a PRECHARGE command canbe issued to the corresponding bank. Accordingly, the arbiter 301 canaccess the tRAS field 517 of each entry of the request queue 300 toidentify pending memory access requests having a corresponding PtRASvalue of zero. In the event that multiple memory access requests meetthis criterion, the arbiter 301 can select the oldest pending memoryaccess request or the highest-priority pending memory access request.

In the event that no pending memory requests meet the selection criteriadiscussed above, at block 607 the arbiter 301 can default to selectionof the oldest pending memory access request in the request queue 300.Alternatively, the arbiter 301 can default to selection of thehighest-priority pending memory access request in the request queue 300.

As described above, while FIG. 6 illustrates one example of a selectioncriteria hierarchy used by the arbiter 301 to select pending memoryaccess requests for servicing, other hierarchies using some combinationof one or more of these selection criteria may be implemented. Toillustrate, in an alternate hierarchy, those pending memory accessrequests being addressed to the same page (as discussed at block 605)may be preferentially selected over memory access requests beingaddressed to a bank for which a precharge operation has been initiated(as discussed at block 604). As another example, the criteria of themaximum delay latency (as discussed at block 601) or the criteria of theinitiation of a precharge operation to the corresponding block (asdiscussed at block 604) may be omitted from consideration in thearbitration process or considered at a lower level in the selectionhierarchy than that shown in FIG. 6.

As previously described, a DDR memory includes a plurality of memorytiming and state information, of which tRP and tRAS are but twoexamples. One skilled in the art will appreciate that other timing andstate information associated with the DDR memory can be used by thescheduler 14 to select a pending memory access request for servicing.For example, timing information representative of memorywrite-to-precharge delays, read-to-precharge delays, and the like, canbe modeled and used to select a preferred request from pending memoryaccess requests.

Other embodiments, uses, and advantages of the disclosure will beapparent to those skilled in the art from consideration of thespecification and practice of the disclosure disclosed herein. Thespecification and drawings should be considered exemplary only, and thescope of the disclosure is accordingly intended to be limited only bythe following claims and equivalents thereof.

Note that not all of the activities or elements described above in thegeneral description are required, that a portion of a specific activityor device may not be required, and that one or more further activitiesmay be performed, or elements included, in addition to those described.Still further, the order in which activities are listed is notnecessarily the order in which they are performed.

Also, the concepts have been described with reference to specificembodiments. However, one of ordinary skill in the art appreciates thatvarious modifications and changes can be made without departing from thescope of the present disclosure as set forth in the claims below.Accordingly, the specification and figures are to be regarded in anillustrative rather than a restrictive sense, and all such modificationsare intended to be included within the scope of the present disclosure.

Benefits, other advantages, and solutions to problems have beendescribed above with regard to specific embodiments. However, thebenefits, advantages, solutions to problems, and any feature(s) that maycause any benefit, advantage, or solution to occur or become morepronounced are not to be construed as a critical, required, or essentialfeature of any or all the claims.

1. In a data processing system comprising one or more processor corescoupled to a memory, a method comprising: scheduling pending memoryaccess requests for servicing by the memory using first memory timingand state information for memory access requests previously selected forservicing and using second memory timing and state information for thepending memory access requests.
 2. The method of claim 1, furthercomprising: issuing memory access requests to the memory using logic ofthe data processing system that is clocked using a first clock signalhaving a first frequency; and wherein scheduling pending memory accessrequests comprises scheduling pending memory access requests using logicof the data processing system that is clocked using a second clocksignal having a second frequency different from the first frequency. 3.The method of claim 1, wherein the memory comprises a double data raterandom access memory.
 4. The method of claim 1, wherein: the firstmemory timing and state information comprises, for each bank of thememory, information estimating, for each bank of the memory, an open rowof the bank and information estimating at least one of: a time remainingbefore an activate operation can be initiated for the bank: and a timeremaining before a precharge operation can be initiated for the bank;and the second memory timing and state information comprises, for eachpending memory access request, information identifying any other pendingmemory access requests that are addressed to a common page as thepending memory access request and information indicating whether the rowassociated with the pending memory access request is open.
 5. The methodof claim 4, wherein scheduling pending memory access requests comprises:preferentially selecting for servicing by the memory a pending memoryaccess request that is determined to be addressed to an open row of acorresponding bank based on the second memory timing and stateinformation.
 6. The method of claim 5, wherein scheduling pending memoryaccess requests comprises: in the event that no pending memory accessrequest addressed to an open row of a corresponding bank is identified,preferentially selecting for servicing by the memory a pending memoryaccess request that is determined to be addressed to a page of thememory for which a precharge operation has completed based on the firstmemory timing and state information.
 7. The method of claim 5, whereinscheduling pending memory access requests comprises: in the event thatno pending memory access request addressed to a row that is currentlyopen in the memory is identified, preferentially selecting for servicingby the memory a pending memory access request that is determined to beaddressed to a page of the memory for which a precharge operation hasbeen initiated based on the second timing information.
 8. The method ofclaim 7, further comprising: in the event that no pending memory accessrequest addressed to a page of the memory for which a prechargeoperation has been initiated is identified, preferentially selecting forservicing by the memory a memory access request that is addressed to asame page as one or more other pending memory access requests.
 9. In adata processing system comprising one or more processor cores coupled toa memory, a method comprising: preferentially selecting for servicing bythe memory a pending memory access request that is determined to beaddressed to a page that is currently open in the memory; and in theevent that no pending memory access request addressed to a page that iscurrently open in the memory is identified, preferentially selecting forservicing by the memory a pending memory access request that isdetermined to be addressed to a page for which a precharge operation hascompleted.
 10. The method of claim 9, further comprising: in the eventthat no pending memory access request addressed to a page for which aprecharge operation has completed is identified, preferentiallyselecting for servicing by the memory a pending memory access requestthat is determined to be addressed to a page of the memory for which aprecharge operation has been initiated.
 11. The method of claim 10,further comprising: in the event that no pending memory access requestaddressed to a page of the memory for which a precharge operation hasbeen initiated is identified, preferentially selecting the oldestpending memory access request.
 12. The method of claim 11, furthercomprising: assigning each pending memory access request a correspondingtimeout value; decrementing the timeout value of a pending memory accessrequest each time the pending memory access request is not selected forservicing in favor of another pending memory access request; andpreferentially selecting for servicing by the memory a pending memoryaccess request having a corresponding timeout value meeting apredetermined threshold; and wherein a pending memory access requestthat is determined to be addressed to a row that is currently open inthe memory is preferentially selected in the event that no memory accessrequest having a corresponding timeout value that has met thepredetermined threshold is identified.
 13. The method of claim 10,further comprising: in the event that no pending memory access requestaddressed to a page of the memory for which a precharge operation hasbeen initiated is identified, preferentially selecting for servicing bythe memory a memory access request that is addressed to a common page asone or more other pending memory access requests.
 14. A data processingsystem comprising: at least one processor; a scheduler to reorderpending memory access requests for servicing by a memory using firstmemory timing information for memory access requests previously selectedfor servicing by the memory and using second memory timing informationfor the pending memory access requests.
 15. The data processing systemof claim 14, further comprising: a memory controller to issue memoryaccess requests to the memory; and wherein memory controller is clockedusing a first clock signal having a first frequency and the scheduler isclocked using a second clock signal having a second frequency differentthan the first frequency.
 16. The data processing system of claim 14,wherein: the first memory timing and state information comprises, foreach bank of the memory, information estimating, for each bank of thememory, an open row of the bank and information estimating at least oneof: a time remaining before an activate operation can be initiated forthe bank: and a time remaining before a precharge operation can beinitiated for the bank; and the second memory timing and stateinformation comprises, for each pending memory access request,information identifying any other pending memory access requests thatare addressed to a common page as the pending memory access request andinformation indicating whether the row associated with the pendingmemory access request is open.
 17. The data processing system of claim16, wherein the scheduler is to preferentially select for servicing bythe memory a pending memory access request that is determined to beaddressed to an open row of a corresponding bank based on the secondmemory timing and state information.
 18. The data processing system ofclaim 17, wherein in the event that no pending memory access requestaddressed to an open row of a corresponding bank is identified, thescheduler is to preferentially select for servicing by the memory apending memory access request that is determined to be addressed to apage of the memory for which a precharge operation has completed basedon the first memory timing and state information.
 19. The dataprocessing system of claim 17, wherein in the event that no pendingmemory access request addressed to a row that is currently open in thememory is identified, the scheduler is to preferentially select forservicing by the memory a pending memory access request that isdetermined to be addressed to a page of the memory for which a prechargeoperation has been initiated based on the second timing information. 20.The data processing system of claim 19, wherein in the event that nopending memory access request addressed to a page of the memory forwhich a precharge operation has been initiated is identified, thescheduler is to preferentially select for servicing by the memory amemory access request that is addressed to a same page as one or moreother pending memory access requests.